const buildEnv = require('./cluster/env.js')

const isProd = buildEnv.env === 'production' && buildEnv.build === 'production'

//非生产，都走单进程模式
if (!isProd) {
  //执行工作进程代码
  require('./cluster/worker.js')
} else {
  //生产环境，走集群化
  const cluster = require('cluster')

  if (cluster.isMaster) {
    const os = require('os')
    const cpus = os.cpus().length

    //主进程
    new Array(cpus).fill(0).forEach(item => {
      let worker = cluster.fork()
    })

    //监听子进程退出，重新开启新的子进程
    cluster.on('exit', (worker, code, signal) => {
      //这里需要记录崩溃日志，并重启新的工作进程
      cluster.fork()
    })

    //执行其他主进程代码
    require('./cluster/master.js')
  } else {
    //执行工作进程代码
    require('./cluster/worker.js')
  }
}
